# Copyright (c) 2025 Anfer / Ancante
"""
状态栏管理模块
============

该模块提供统一的状态栏消息管理功能，支持不同类型的消息显示
（信息、警告、错误、成功、进度等），并可设置消息显示时长。
"""

from PyQt5.QtCore import QTimer

class StatusBarManager:
    """
    状态栏管理器类
    
    统一管理应用程序的状态栏显示，提供一致的用户反馈体验。
    支持多种消息类型和自动恢复默认状态功能。
    """
    
    def __init__(self, status_label):
        """
        初始化状态栏管理器
        
        Args:
            status_label (QLabel): 用于显示状态的QLabel控件
        """
        self.status_label = status_label
        self.default_message = "信息: 就绪"  # 默认状态消息
        self.default_style = "color: #ffffff; padding: 5px;"  # 默认样式（白色，适应深色主题）
        self.show_default()  # 显示默认状态
        
    def show_default(self):
        """
        显示默认状态消息
        
        将状态栏恢复为默认消息和默认样式。
        """
        self.status_label.setText(self.default_message)
        self.status_label.setStyleSheet(self.default_style)
    
    def show_message(self, message, timeout=None):
        """
        显示状态消息
        
        Args:
            message (str): 要显示的消息内容
            timeout (int, optional): 消息显示的超时时间（毫秒）
                                   超时后自动恢复默认消息
        """
        self.status_label.setText(message)
        if timeout:
            # 使用 QTimer 实现超时恢复默认消息
            timer = QTimer()
            timer.timeout.connect(self.show_default)
            timer.setSingleShot(True)  # 单次触发
            timer.start(timeout)
    
    def show_info(self, message):
        """
        显示普通信息消息
        
        Args:
            message (str): 信息内容
        """
        self.status_label.setStyleSheet("color: #ffffff; padding: 5px;")  # 使用白色样式
        self.show_message(f"信息: {message}")
    
    def show_warning(self, message):
        """
        显示警告消息
        
        Args:
            message (str): 警告内容
        """
        # 设置黄色警告样式，提高在黑色背景上的可见度
        self.status_label.setStyleSheet("color: #f1c40f; padding: 5px;")
        self.show_message(f"警告: {message}")
    
    def show_error(self, message):
        """
        显示错误消息
        
        Args:
            message (str): 错误内容
        """
        # 设置鲜红色错误样式，提高在黑色背景上的可见度
        self.status_label.setStyleSheet("color: #e74c3c; padding: 5px;")
        self.show_message(f"错误: {message}")
    
    def show_success(self, message):
        """
        显示成功消息
        
        Args:
            message (str): 成功内容
        """
        # 设置亮绿色成功样式，提高在黑色背景上的可见度
        self.status_label.setStyleSheet("color: #2ecc71; padding: 5px;")
        self.show_message(f"成功: {message}")
    
    def show_progress(self, message):
        """
        显示进度消息
        
        Args:
            message (str): 进度信息内容
        """
        self.status_label.setStyleSheet("color: #ffffff; padding: 5px;")  # 使用白色样式
        self.show_message(f"进度: {message}")